package com.quanyan.comment.serviceFacade;






import com.quanyan.api.APIResponse;
import com.quanyan.comment.reqeust.*;
import com.quanyan.comment.response.*;
import com.quanyan.common.Plugin.PageObj;

import java.util.List;

/**
 * Created by jian.zhou on 2016/6/2.
 * 评论接口
 */
public interface CommentServiceFacade {
    /**
     * 增加评论
     * @param reqCommentParam 评论请求参数对象
     * @return
     */
    APIResponse commentAdd(ReqCommentParam reqCommentParam);

    /**
     * 评论查询请求对象
     *
     * @param reqCommentQuery
     * @return
     */
    APIResponse<PageObj<List<RespComment>>> commentQuery(ReqCommentQuery reqCommentQuery);


    /**
     * 删除评论
     * @param commentId
     * @return
     */
    APIResponse commentDel(Integer commentId);


    /**
     *
     * @param businessCode
     * @param businessId
     * 获取业务评价项目
     * @return
     */
    APIResponse<List<RespCommentDetail>> getCommentDetailPro(String businessCode, Integer businessId);


    /**
     * 获取评论项目 打分
     * @param commentId
     * @return
     */
    APIResponse<List<RespCommentDetailScore>> getCommentDetailScore(Integer commentId);


    /**
     * 判断用户是否对业务进行评价
     * @param reqIsComment
     * @return true 已评论 false 未评论
     */
    APIResponse<Boolean> checkIsComment(ReqIsComment reqIsComment);


    /**
     * 查询某个业务评论汇总
     * @param reqBaseParam
     * @return
     */
    public RespCommentSum queryCommentSum(ReqBaseParam reqBaseParam);

    /**
     * 判断场地是否评价
     * @param reqIsComment
     * @return true 已评论 false 未评论
     */
    public boolean checkIsCommentPlace(ReqIsComment reqIsComment);



    /**
     * 批量查询某个业务下的 所有业务星级
     * @param reqBaseParam
     * @return
     */
    public APIResponse<List<RespCommentSum>> batchQueryClubCommentSum(ReqBaseParam reqBaseParam);

    /**
     * 查询标签
     * @param reqCommentQuery
     * @return
     */
    public APIResponse<List<RespCommentTag>> commentTagQuery(ReqCommentQuery reqCommentQuery);


    /**
     * 标签增加
     * @param reqCommentTag
     * @return
     */
    public APIResponse commentTagInsert(ReqCommentTag reqCommentTag) ;


    public APIResponse commentTagUpdate(ReqCommentTag reqCommentTag);


    /**
     * 获取打分项 和标签
     * @param reqCommentQuery
     * @return
     */
    public RespCommentTagAndCommentDetail getCommentTagAndCommentDetail(ReqCommentQuery reqCommentQuery);


    /**
     * 删除
     * @param reqCommentQuery
     * @return
     */
    public APIResponse delDynamicComment(ReqCommentQuery reqCommentQuery);


    /**
     * 查询 某个业务下 打分项 的平均分
     * @param reqCommentQuery
     * @return
     */
    APIResponse<List<RespCommentDetailScore>> getRespCommentDetailScoreSum(ReqCommentQuery reqCommentQuery);


    /**
     * 判断是否回复   true 已回复 false 未回复
     * @param reqIsComment
     * @return
     */
    public boolean checkIsReplace(ReqIsComment reqIsComment);


    /**
     *
     * @param ids
     * @return
     */
    public List<LableBaseInfo> batchTagByIds( List<Integer> ids ) ;

    /**
     *
     * @param pageSize
     * @return
     */
    public List<LableBaseInfo> randTags(Integer pageSize);

}
